void LocalCooc (ImSize, CoSize, WinSize, Dy,Dx, InIm, CoMa,
                EnerMa, ContMa, EntrMa, HomoMa)
int   ImSize, CoSize, WinSize, Dy,Dx;
BYTE  ** InIm;
int   ** CoMa;
float ** EnerMa;
float ** ContMa;
float ** EntrMa;
float ** HomoMa;
{
   int   j,i, y,x, r,c, a,b, o, Resol, Cen;
   long  l;

   o     = MaxAbs (Dx,Dy);
   Cen   = WinSize / 2;
   Resol = 256 / CoSize;

   for (r=0; r<CoSize; r++)
      for (c=0; c<CoSize; c++)  CoMa [r][c] = 0;

   for (r=0; r<ImSize; r++) {
      for (c=0; c<ImSize; c++) {
         EnerMa [r][c] = (float)0;
         ContMa [r][c] = (float)0;
         EntrMa [r][c] = (float)0;
         HomoMa [r][c] = (float)0;
   }  }

   for (r=o; r<ImSize-WinSize-o; r++) {
      for (c=o; c<ImSize-WinSize-o; c++) {
     
         for (j=0; j<CoSize; j++)
            for (i=0; i<CoSize; i++)  CoMa [j][i] = 0;

         for (y=r; y<r+WinSize; y++) {
            for (x=c; x<c+WinSize; x++) {
               a = InIm [y][x] / Resol;
               b = InIm [y+Dy][x+Dx] / Resol;
               CoMa [a][b] ++;
         }  }
         /*--------------------------------------- Gen Features */
         for (j=0; j<CoSize; j++)
            for (i=0; i<CoSize; i++)
               EnerMa [r+Cen][c+Cen] += (float) CoMa[j][i] * CoMa[j][i];

         for (j=0; j<CoSize; j++)
            for (i=0; i<CoSize; i++)
               ContMa [r+Cen][c+Cen] += (float) (j-i) * (j-i) * CoMa[j][i];

         for (j=0; j<CoSize; j++)
            for (i=0; i<CoSize; i++)
               if (CoMa[j][i])
                  EntrMa [r+Cen][c+Cen] += (float) CoMa[j][i] * log((double)CoMa[j][i]);

         for (j=0; j<CoSize; j++)
            for (i=0; i<CoSize; i++)
               if (CoMa[j][i])
                  HomoMa [r+Cen][c+Cen] += (float) CoMa[j][i] / (1 + abs(j-i));
}  }  }
